<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
  <style>
    /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript&plugins=line-highlight+line-numbers+toolbar+show-language */
    /**
     * prism.js default theme for JavaScript, CSS and HTML
     * Based on dabblet (http://dabblet.com)
     * @author Lea Verou
     */
    code[class*="language-"],
    pre[class*="language-"] {
      color: black;
      background: none;
      text-shadow: 0 1px white;
      font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
      text-align: left;
      white-space: pre;
      word-spacing: normal;
      word-break: normal;
      word-wrap: normal;
      line-height: 1.5;
      -moz-tab-size: 4;
      -o-tab-size: 4;
      tab-size: 4;
      -webkit-hyphens: none;
      -moz-hyphens: none;
      -ms-hyphens: none;
      hyphens: none;
    }
    pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
    code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
      text-shadow: none;
      background: #98d8b7;
    }
    pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
    code[class*="language-"]::selection, code[class*="language-"] ::selection {
      text-shadow: none;
      background: #98d8b7;
    }
    @media print {
      code[class*="language-"],
      pre[class*="language-"] {
        text-shadow: none;
      }
    }
    /* Code blocks */
    pre[class*="language-"] {
      padding: 1em;
      margin: .5em 0;
      overflow: auto;
    }
    :not(pre) > code[class*="language-"],
    pre[class*="language-"] {
      background: #f5f2f0;
    }
    /* Inline code */
    :not(pre) > code[class*="language-"] {
      padding: .1em;
      border-radius: .3em;
      white-space: normal;
    }
    .token.comment,
    .token.prolog,
    .token.doctype,
    .token.cdata {
      color: slategray;
    }
    .token.punctuation {
      color: #999;
    }
    .namespace {
      opacity: .7;
    }
    .token.property,
    .token.tag,
    .token.boolean,
    .token.number,
    .token.constant,
    .token.symbol,
    .token.deleted {
      color: #905;
    }
    .token.selector,
    .token.attr-name,
    .token.string,
    .token.char,
    .token.builtin,
    .token.inserted {
      color: #690;
    }
    .token.operator,
    .token.entity,
    .token.url,
    .language-css .token.string,
    .style .token.string {
      color: #a67f59;
      background: hsla(0, 0%, 100%, .5);
    }
    .token.atrule,
    .token.attr-value,
    .token.keyword {
      color: #07a;
    }
    .token.function {
      color: #DD4A68;
    }
    .token.regex,
    .token.important,
    .token.variable {
      color: #e90;
    }
    .token.important,
    .token.bold {
      font-weight: bold;
    }
    .token.italic {
      font-style: italic;
    }
    .token.entity {
      cursor: help;
    }
    pre[data-line] {
      position: relative;
      padding: 1em 0 1em 3em;
    }
    .line-highlight {
      position: absolute;
      left: 0;
      right: 0;
      padding: inherit 0;
      margin-top: 1em; /* Same as .prism’s padding-top */
      background: hsla(24, 20%, 50%,.08);
      background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));
      pointer-events: none;
      line-height: inherit;
      white-space: pre;
    }
      .line-highlight:before,
      .line-highlight[data-end]:after {
        content: attr(data-start);
        position: absolute;
        top: .4em;
        left: .6em;
        min-width: 1em;
        padding: 0 .5em;
        background-color: hsla(24, 20%, 50%,.4);
        color: hsl(24, 20%, 95%);
        font: bold 65%/1.5 sans-serif;
        text-align: center;
        vertical-align: .3em;
        border-radius: 999px;
        text-shadow: none;
        box-shadow: 0 1px white;
      }
      .line-highlight[data-end]:after {
        content: attr(data-end);
        top: auto;
        bottom: .4em;
      }
    pre.line-numbers {
      position: relative;
      padding-left: 3.8em;
      counter-reset: linenumber;
    }
    pre.line-numbers > code {
      position: relative;
    }
    .line-numbers .line-numbers-rows {
      position: absolute;
      pointer-events: none;
      top: 0;
      font-size: 100%;
      left: -3.8em;
      width: 3em; /* works for line-numbers below 1000 lines */
      letter-spacing: -1px;
      border-right: 1px solid #999;
      -webkit-user-select: none;
      -moz-user-select: none;
      -ms-user-select: none;
      user-select: none;
    }
      .line-numbers-rows > span {
        pointer-events: none;
        display: block;
        counter-increment: linenumber;
      }
        .line-numbers-rows > span:before {
          content: counter(linenumber);
          color: #999;
          display: block;
          padding-right: 0.8em;
          text-align: right;
        }
    pre.code-toolbar {
      position: relative;
    }
    pre.code-toolbar > .toolbar {
      position: absolute;
      top: .3em;
      right: .2em;
      transition: opacity 0.3s ease-in-out;
      opacity: 0;
    }
    pre.code-toolbar:hover > .toolbar {
      opacity: 1;
    }
    pre.code-toolbar > .toolbar .toolbar-item {
      display: inline-block;
    }
    pre.code-toolbar > .toolbar a {
      cursor: pointer;
    }
    pre.code-toolbar > .toolbar button {
      background: none;
      border: 0;
      color: inherit;
      font: inherit;
      line-height: normal;
      overflow: visible;
      padding: 0;
      -webkit-user-select: none; /* for button */
      -moz-user-select: none;
      -ms-user-select: none;
    }
    pre.code-toolbar > .toolbar a,
    pre.code-toolbar > .toolbar button,
    pre.code-toolbar > .toolbar span {
      color: #bbb;
      font-size: .8em;
      padding: 0 .5em;
      background: #f5f2f0;
      background: rgba(224, 224, 224, 0.2);
      box-shadow: 0 2px 0 0 rgba(0,0,0,0.2);
      border-radius: .5em;
    }
    pre.code-toolbar > .toolbar a:hover,
    pre.code-toolbar > .toolbar a:focus,
    pre.code-toolbar > .toolbar button:hover,
    pre.code-toolbar > .toolbar button:focus,
    pre.code-toolbar > .toolbar span:hover,
    pre.code-toolbar > .toolbar span:focus {
      color: inherit;
      text-decoration: none;
    }
  </style>

  <style>
    @keyframes hover-color {
      from {
        border-color: #c0c0c0; }
      to {
        border-color: #53b783; } }
    .magic-radio,
    .magic-checkbox {
      position: absolute;
      display: none; }
    .magic-radio[disabled],
    .magic-checkbox[disabled] {
      cursor: not-allowed; }
    .magic-radio + label,
    .magic-checkbox + label {
      position: relative;
      display: block;
      padding-left: 30px;
      cursor: pointer;
      vertical-align: middle; }
      .magic-radio + label:hover:before,
      .magic-checkbox + label:hover:before {
        animation-duration: 0.4s;
        animation-fill-mode: both;
        animation-name: hover-color; }
      .magic-radio + label:before,
      .magic-checkbox + label:before {
        position: absolute;
        top: 0;
        left: 0;
        display: inline-block;
        width: 20px;
        height: 20px;
        content: '';
        border: 1px solid #c0c0c0; }
      .magic-radio + label:after,
      .magic-checkbox + label:after {
        position: absolute;
        display: none;
        content: ''; }
    .magic-radio[disabled] + label,
    .magic-checkbox[disabled] + label {
      cursor: not-allowed;
      color: #e4e4e4; }
      .magic-radio[disabled] + label:hover, .magic-radio[disabled] + label:before, .magic-radio[disabled] + label:after,
      .magic-checkbox[disabled] + label:hover,
      .magic-checkbox[disabled] + label:before,
      .magic-checkbox[disabled] + label:after {
        cursor: not-allowed; }
      .magic-radio[disabled] + label:hover:before,
      .magic-checkbox[disabled] + label:hover:before {
        border: 1px solid #e4e4e4;
        animation-name: none; }
      .magic-radio[disabled] + label:before,
      .magic-checkbox[disabled] + label:before {
        border-color: #e4e4e4; }
    .magic-radio:checked + label:before,
    .magic-checkbox:checked + label:before {
      animation-name: none; }
    .magic-radio:checked + label:after,
    .magic-checkbox:checked + label:after {
      display: block; }
    .magic-radio + label:before {
      border-radius: 50%; }
    .magic-radio + label:after {
      top: 6px;
      left: 6px;
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background: #53b783; }
    .magic-radio:checked + label:before {
      border: 1px solid #53b783; }
    .magic-radio:checked[disabled] + label:before {
      border: 1px solid #c9e2f9; }
    .magic-radio:checked[disabled] + label:after {
      background: #c9e2f9; }
    .magic-checkbox + label:before {
      border-radius: 3px; }
    .magic-checkbox + label:after {
      top: 2px;
      left: 7px;
      box-sizing: border-box;
      width: 6px;
      height: 12px;
      transform: rotate(45deg);
      border-width: 2px;
      border-style: solid;
      border-color: #fff;
      border-top: 0;
      border-left: 0; }
    .magic-checkbox:checked + label:before {
      border: #53b783;
      background: #53b783; }
    .magic-checkbox:checked[disabled] + label:before {
      border: #c9e2f9;
      background: #c9e2f9; }
  </style>

  <style>
    html, body {
      height: 100%;
      width: 100%;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
    }
    body {
      font-family: Helvetica Neue For Number,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;
      font-size: 14px;
      line-height: 24px;
      color: #444;
    }
    * {
      padding: 0;
      margin: 0;
    }
    ::selection {
      text-shadow: none;
      color: #fff;
      background: #98d8b7;
    }
    ::-moz-selection {
      text-shadow: none;
      color: #fff;
      background: #98d8b7;
    }
    .error-page {
      display: flex;
      flex-direction: column;
      width: 100%;
      height: 100%;
    }
    .error-logo {
      position: absolute;
      top: -15px;
      right: 0px;
    }
    .error-stack {
      background: #f1f1f1;
      padding: 140px 80px 40px;
      box-sizing: border-box;
      border-bottom: 1px solid #e2e2e2;
    }
    .error-status {
      color: #afafaf;
      font-size: 150px;
      position: absolute;
      opacity: 0.2;
      left: 76px;
      top: 80px;
      font-weight: 600;
      margin-bottom: 10px;
    }
    .error-name {
      color: #db5461;
      font-size: 18px;
      font-family: menlo, 'sans-serif';
      font-weight: 300;
      margin-bottom: 15px;
    }
    .error-title {
      border-bottom: 1px solid #e0e0e0;
      padding-bottom: 26px;
      margin-bottom: 20px;
      margin-top: 48px;
    }
    .error-title .box {
      color: #db5461;
      font-weight: 700;
      font-size: 20px;
      margin-left: 5px;
    }
    .error-title .context {
      color: #db5461;
      font-weight: 400;
      margin-left: 5px;
      margin-top: 48px;
      line-height: 1.5;
    }
    .error-frames {
      display: flex;
      flex-direction: row-reverse;
      margin-top: 40px;
    }
    .frame-preview {
      background: #fff;
      width: 50%;
      box-shadow: 0px 0px 9px #d3d3d3;
      height: 100%;
      box-sizing: border-box;
      overflow: auto;
    }
    .frame-stack {
      margin-right: 40px;
      flex: 1;
      padding: 10px 0;
      box-sizing: border-box;
    }
    .frames-list {
      overflow: auto;
      max-height: 334px;
    }
    .frames-filter-selector {
      margin-bottom: 30px;
      margin-left: 8px;
    }
    .request-details {
      padding: 50px 80px;
    }
    .request-title {
      text-transform: uppercase;
      font-size: 18px;
      letter-spacing: 1px;
      padding: 0 5px 5px 5px;
      margin-bottom: 15px;
      color: #53b783;
    }
    .request-details .table {
      width: 100%;
      border-collapse: collapse;
      margin-bottom: 80px;
    }
    .request-details .tr {
      display: flex;
      flex-direction: row;
    }
    .request-details .tr:nth-of-type(even) {
      background: #fbfbfb;
    }
    .request-details .table .td {
      padding: 6px 5px;
      font-size: 14px;
      letter-spacing: 0.4px;
      color: #455275;
      border-bottom: 1px solid #e8e8e8;
      word-break: break-word;
    }
    .request-details .table .td.title {
      flex: 1;
      color: #565655;
      font-size: 14px;
      font-weight: 600;
    }
    .request-details .table .td.content {
      width: 70%;
    }
    .request-details .table .td.content.code {
      background: #fff;
      width: 70%;
      box-shadow: 0px 0px 9px #d3d3d3;
      height: 100%;
      box-sizing: border-box;
      overflow: auto;
    }
    code[class*="language-"], pre[class*="language-"] {
      background: transparent;
      font-size: 13px;
      line-height: 1.8;
    }
    .line-numbers .line-numbers-rows {
      border: none;
    }
    .frame-row {
      display: flex;
      justify-content: space-between;
      padding: 6px 10px 6px 34px;
      position: relative;
      cursor: pointer;
      transition: background 300ms ease;
    }
    .frame-row.native-frame {
      display: none;
      opacity: 0.4;
    }
    .frame-row.native-frame.force-show {
      display: flex;
    }
    .frame-row:after {
      content: "";
      background: #db5461;
      position: absolute;
      top: 50%;
      left: 10px;
      transform: translateY(-50%);
      height: 10px;
      width: 10px;
      border-radius: 24px;
    }
    .frame-row:hover, .frame-row.active {
      background: #fff;
    }
    .frame-row.active {
      opacity: 1;
    }
    .frame-row-filepath {
      color: #455275;
      font-weight: 600;
      margin-right: 15px;
    }
    .frame-context {
      display: none;
    }
    .frame-row-code {
      color: #999;
    }
    #frame-file {
      color: #455275;
      font-weight: 600;
      border-bottom: 1px solid #e8e8e8;
      padding: 10px 22px;
    }
    #frame-method {
      color: #999;
      font-weight: 400;
      border-top: 1px solid #e8e8e8;
      padding: 10px 22px;
    }
    .is-hidden {
      display: none;
    }
</style>
</head>
<body>
  <section class="error-page">
    <section class="error-stack">
      <h3 class="error-status">500</h3>
      <div class="error-title">
        <h1 class="box">MongoError in &#x2F;login?username&#x3D;xie&amp;password&#x3D;123456</h1>
        <div class="context">pool destroyed</div>
      </div>

      <img class="error-logo" src="https://zos.alipayobjects.com/rmsportal/JFKAMfmPehWfhBPdCjrw.svg"/>

      <div class="error-frames">
        <div class="frame-preview is-hidden">
          <div id="frame-file"></div>
          <div id="frame-code"><pre class="line-numbers"><code id="code-drop"></code></pre></div>
          <div id="frame-method"></div>
        </div>

        <div class="frame-stack">
          <div class="frames-filter-selector">
            <input type="checkbox" class="magic-checkbox" name="frames-filter" id="frames-filter">
            <label for="frames-filter">Show all frames</label>
          </div>

          <div class="frames-list">
              
              <div class="frame-row active native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;connection&#x2F;pool.js:840:8
                </div>
                <div class="frame-row-code">
                  Pool.write
                </div>
                <div class="frame-context"
                  data-start="835"
                  data-line="840"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;connection&#x2F;pool.js"
                  data-method="Pool.write"
                  data-extname="js"
                  data-line-column="840:8"
                >    throw new MongoError(&#39;write method must provide a callback&#39;);
  }

  &#x2F;&#x2F; Pool was destroyed error out
  if (this.state &#x3D;&#x3D;&#x3D; DESTROYED || this.state &#x3D;&#x3D;&#x3D; DESTROYING) {
    cb(new MongoError(&#39;pool destroyed&#39;));
    return;
  }

  if (this.state &#x3D;&#x3D;&#x3D; DRAINING) {
    cb(new MongoError(&#39;pool is draining, new operations prohibited&#39;));
                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;wireprotocol&#x2F;command.js:128:10
                </div>
                <div class="frame-row-code">
                  _command
                </div>
                <div class="frame-context"
                  data-start="123"
                  data-line="128"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;wireprotocol&#x2F;command.js"
                  data-method="_command"
                  data-extname="js"
                  data-line-column="128:10"
                >        return callback.apply(null, arguments);
      }
    : callback;

  try {
    pool.write(message, commandOptions, commandResponseHandler);
  } catch (err) {
    commandResponseHandler(err);
  }
}

                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;wireprotocol&#x2F;command.js:28:5
                </div>
                <div class="frame-row-code">
                  command
                </div>
                <div class="frame-context"
                  data-start="23"
                  data-line="28"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;wireprotocol&#x2F;command.js"
                  data-method="command"
                  data-extname="js"
                  data-line-column="28:5"
                >  if (cmd &#x3D;&#x3D; null) {
    return callback(new MongoError(&#x60;command ${JSON.stringify(cmd)} does not return a cursor&#x60;));
  }

  if (!isClientEncryptionEnabled(server)) {
    _command(server, ns, cmd, options, callback);
    return;
  }

  const wireVersion &#x3D; maxWireVersion(server);
  if (typeof wireVersion !&#x3D;&#x3D; &#39;number&#39; || wireVersion &lt; 8) {
                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;wireprotocol&#x2F;query.js:57:3
                </div>
                <div class="frame-row-code">
                  Object.query
                </div>
                <div class="frame-context"
                  data-start="52"
                  data-line="57"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;wireprotocol&#x2F;query.js"
                  data-method="Object.query"
                  data-extname="js"
                  data-line-column="57:3"
                >
  if (cursorState.session) {
    commandOptions.session &#x3D; cursorState.session;
  }

  command(server, ns, findCmd, commandOptions, callback);
}

function prepareFindCommand(server, ns, cmd, cursorState) {
  cursorState.batchSize &#x3D; cmd.batchSize || cursorState.batchSize;
  let findCmd &#x3D; {
                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;topologies&#x2F;server.js:644:16
                </div>
                <div class="frame-row-code">
                  Server.query
                </div>
                <div class="frame-context"
                  data-start="639"
                  data-line="644"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;topologies&#x2F;server.js"
                  data-method="Server.query"
                  data-extname="js"
                  data-line-column="644:16"
                > * @param {object} cmd The command document for the query
 * @param {object} options Optional settings
 * @param {function} callback
 *&#x2F;
Server.prototype.query &#x3D; function(ns, cmd, cursorState, options, callback) {
  wireProtocol.query(this, ns, cmd, cursorState, options, callback);
};

&#x2F;**
 * Execute a &#x60;getMore&#x60; against the server
 *
                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;operations&#x2F;find.js:24:12
                </div>
                <div class="frame-row-code">
                  FindOperation.execute
                </div>
                <div class="frame-context"
                  data-start="19"
                  data-line="24"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;operations&#x2F;find.js"
                  data-method="FindOperation.execute"
                  data-extname="js"
                  data-line-column="24:12"
                >    this.server &#x3D; server;

    const cursorState &#x3D; this.cursorState || {};

    &#x2F;&#x2F; TOOD: use &#x60;MongoDBNamespace&#x60; through and through
    server.query(this.ns.toString(), this.cmd, cursorState, this.options, callback);
  }
}

defineAspects(FindOperation, [
  Aspect.READ_OPERATION,
                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;operations&#x2F;execute_operation.js:151:17
                </div>
                <div class="frame-row-code">
                  topology.selectServer
                </div>
                <div class="frame-context"
                  data-start="146"
                  data-line="151"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;operations&#x2F;execute_operation.js"
                  data-method="topology.selectServer"
                  data-extname="js"
                  data-line-column="151:17"
                >      !inTransaction &amp;&amp;
      supportsRetryableReads(server) &amp;&amp;
      operation.canRetryRead;

    if (operation.hasAspect(Aspect.RETRYABLE) &amp;&amp; shouldRetryReads) {
      operation.execute(server, callbackWithRetry);
      return;
    }

    operation.execute(server, callback);
  });
                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;topologies&#x2F;server.js:832:3
                </div>
                <div class="frame-row-code">
                  Server.selectServer
                </div>
                <div class="frame-context"
                  data-start="827"
                  data-line="832"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;topologies&#x2F;server.js"
                  data-method="Server.selectServer"
                  data-extname="js"
                  data-line-column="832:3"
                >  if (typeof selector &#x3D;&#x3D;&#x3D; &#39;function&#39; &amp;&amp; typeof callback &#x3D;&#x3D;&#x3D; &#39;undefined&#39;)
    (callback &#x3D; selector), (selector &#x3D; undefined), (options &#x3D; {});
  if (typeof options &#x3D;&#x3D;&#x3D; &#39;function&#39;)
    (callback &#x3D; options), (options &#x3D; selector), (selector &#x3D; undefined);

  callback(null, this);
};

var listeners &#x3D; [&#39;close&#39;, &#39;error&#39;, &#39;timeout&#39;, &#39;parseError&#39;, &#39;connect&#39;];

&#x2F;**
                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;topologies&#x2F;topology_base.js:342:32
                </div>
                <div class="frame-row-code">
                  Server.selectServer
                </div>
                <div class="frame-context"
                  data-start="337"
                  data-line="342"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;topologies&#x2F;topology_base.js"
                  data-method="Server.selectServer"
                  data-extname="js"
                  data-line-column="342:32"
                >  lastIsMaster() {
    return this.s.coreTopology.lastIsMaster();
  }

  selectServer(selector, options, callback) {
    return this.s.coreTopology.selectServer(selector, options, callback);
  }

  &#x2F;**
   * Unref all sockets
   * @method
                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;operations&#x2F;execute_operation.js:137:12
                </div>
                <div class="frame-row-code">
                  executeWithServerSelection
                </div>
                <div class="frame-context"
                  data-start="132"
                  data-line="137"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;operations&#x2F;execute_operation.js"
                  data-method="executeWithServerSelection"
                  data-extname="js"
                  data-line-column="137:12"
                >      operation.execute(server, callback);
    });
  }

  &#x2F;&#x2F; select a server, and execute the operation against it
  topology.selectServer(serverSelectionOptions, (err, server) &#x3D;&gt; {
    if (err) {
      callback(err, null);
      return;
    }

                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;operations&#x2F;execute_operation.js:75:7
                </div>
                <div class="frame-row-code">
                  executeOperation
                </div>
                <div class="frame-context"
                  data-start="70"
                  data-line="75"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;operations&#x2F;execute_operation.js"
                  data-method="executeOperation"
                  data-extname="js"
                  data-line-column="75:7"
                >    callback(err, result);
  }

  try {
    if (operation.hasAspect(Aspect.EXECUTE_WITH_SELECTION)) {
      executeWithServerSelection(topology, operation, executeCallback);
    } else {
      operation.execute(executeCallback);
    }
  } catch (e) {
    if (session &amp;&amp; session.owner &#x3D;&#x3D;&#x3D; owner) {
                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;cursor.js:545:7
                </div>
                <div class="frame-row-code">
                  Cursor._initializeCursor
                </div>
                <div class="frame-context"
                  data-start="540"
                  data-line="545"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;cursor.js"
                  data-method="Cursor._initializeCursor"
                  data-extname="js"
                  data-line-column="545:7"
                >            cursor.query
          )}]&#x60;
        );
      }

      executeOperation(cursor.topology, cursor.operation, (err, result) &#x3D;&gt; {
        if (err) {
          done(err);
          return;
        }

                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;cursor.js:185:11
                </div>
                <div class="frame-row-code">
                  Cursor._initializeCursor
                </div>
                <div class="frame-context"
                  data-start="180"
                  data-line="185"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;cursor.js"
                  data-method="Cursor._initializeCursor"
                  data-extname="js"
                  data-line-column="185:11"
                >          this.operation.session &#x3D; this.cursorState.session;
        }
      }
    }

    super._initializeCursor(callback);
  }

  &#x2F;**
   * Check if there is any document still available in the cursor
   * @method
                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;cursor.js:748:10
                </div>
                <div class="frame-row-code">
                  nextFunction
                </div>
                <div class="frame-context"
                  data-start="743"
                  data-line="748"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;cursor.js"
                  data-method="nextFunction"
                  data-extname="js"
                  data-line-column="748:10"
                >        self.disconnectHandler.addObjectAndMethod(&#39;cursor&#39;, self, &#39;next&#39;, [callback], callback);
        return;
      }
    }

    self._initializeCursor((err, result) &#x3D;&gt; {
      if (err || result &#x3D;&#x3D;&#x3D; null) {
        callback(err, result);
        return;
      }

                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;cursor.js:202:5
                </div>
                <div class="frame-row-code">
                  Cursor._next
                </div>
                <div class="frame-context"
                  data-start="197"
                  data-line="202"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;core&#x2F;cursor.js"
                  data-method="Cursor._next"
                  data-extname="js"
                  data-line-column="202:5"
                >   * Retrieve the next document from the cursor
   * @method
   * @param {resultCallback} callback A callback function
   *&#x2F;
  _next(callback) {
    nextFunction(this, callback);
  }

  &#x2F;**
   * Clone the cursor
   * @method
                </div>
              </div>
              
              <div class="frame-row native-frame">
                <div class="frame-row-filepath">
                  node_modules&#x2F;mongodb&#x2F;lib&#x2F;cursor.js:248:14
                </div>
                <div class="frame-row-code">
                  cb
                </div>
                <div class="frame-context"
                  data-start="243"
                  data-line="248"
                  data-file="node_modules&#x2F;mongodb&#x2F;lib&#x2F;cursor.js"
                  data-method="cb"
                  data-extname="js"
                  data-line-column="248:14"
                >        } catch (err) {
          return cb(err);
        }
      }

      cursor._next((err, doc) &#x3D;&gt; {
        if (err) return cb(err);
        cursor.s.state &#x3D; CursorState.OPEN;
        cb(null, doc);
      });
    });
                </div>
              </div>
          </div>
        </div>
      </div>
    </section>

    <section class="request-details">
      <h2 class="request-title"> Request Details </h2>
      <div class="table">
        <div class="tr">
          <div class="td title"> URI </div>
          <div class="td content">&#x2F;login?username&#x3D;xie&amp;password&#x3D;123456</div>
        </div>

        <div class="tr">
          <div class="td title"> Request Method </div>
          <div class="td content">POST</div>
        </div>

        <div class="tr">
          <div class="td title"> HTTP Version </div>
          <div class="td content"></div>
        </div>

        <div class="tr">
          <div class="td title"> Connection </div>
          <div class="td content">keep-alive</div>
        </div>
      </div>

      <h2 class="request-title"> Headers </h2>
      <div class="table">
          <div class="tr">
            <div class="td title">user-agent</div>
            <div class="td content">PostmanRuntime&#x2F;7.29.0</div>
          </div>
          <div class="tr">
            <div class="td title">accept</div>
            <div class="td content">*&#x2F;*</div>
          </div>
          <div class="tr">
            <div class="td title">postman-token</div>
            <div class="td content">138e3175-3c39-4220-a5a5-35d669584999</div>
          </div>
          <div class="tr">
            <div class="td title">host</div>
            <div class="td content">yanxuan.xiecheng.live:7001</div>
          </div>
          <div class="tr">
            <div class="td title">accept-encoding</div>
            <div class="td content">gzip, deflate, br</div>
          </div>
          <div class="tr">
            <div class="td title">content-length</div>
            <div class="td content">0</div>
          </div>
      </div>

      <h2 class="request-title"> Cookies </h2>
      <div class="table">
      </div>
      <h2 class="request-title"> AppInfo </h2>
      <div class="table">
        <div class="tr">
          <div class="td title"> baseDir </div>
          <div class="td content">&#x2F;root&#x2F;yanxuan-server-demo</div>
        </div>
        <div class="tr">
          <div class="td title"> config </div>
          <div class="td content code">
            <pre class="line-numbers"><code class="language-json">{ session:
   { maxAge: 86400000,
     key: &#39;YX_SESS&#39;,
     httpOnly: true,
     encrypt: true,
     overwrite: true,
     signed: true,
     autoCommit: true,
     encode: [Function: encode],
     decode: [Function: decode],
     genid: { [Function: v4] v1: [Function: v1], v4: [Circular] } },
  security:
   { domainWhiteList: [ &#39;*&#39; ],
     protocolWhiteList: [],
     defaultMiddleware:
      &#39;csrf,hsts,methodnoallow,noopen,nosniff,csp,xssProtection,xframe,dta&#39;,
     csrf:
      { enable: false,
        type: &#39;ctoken&#39;,
        ignoreJSON: true,
        useSession: false,
        cookieName: &#39;csrfToken&#39;,
        sessionName: &#39;csrfToken&#39;,
        headerName: &#39;x-csrf-token&#39;,
        bodyName: &#39;_csrf&#39;,
        queryName: &#39;_csrf&#39;,
        refererWhiteList: [] },
     xframe: { enable: true, value: &#39;SAMEORIGIN&#39;, matching: [Function] },
     hsts:
      { enable: false, maxAge: 31536000, includeSubdomains: false },
     dta: { enable: true, matching: [Function] },
     methodnoallow: { enable: true, matching: [Function] },
     noopen: { enable: true, matching: [Function] },
     nosniff: { enable: true, matching: [Function] },
     referrerPolicy: { enable: false, value: &#39;no-referrer-when-downgrade&#39; },
     xssProtection:
      { enable: true, value: &#39;1; mode&#x3D;block&#39;, matching: [Function] },
     csp: { enable: false, policy: {} },
     ssrf: { ipBlackList: null, checkAddress: null },
     _protocolWhiteListSet: Set { &#39;http&#39;, &#39;https&#39;, &#39;file&#39;, &#39;data&#39; } },
  helper: { shtml: {} },
  jsonp:
   { limit: 50, callback: [ &#39;_callback&#39;, &#39;callback&#39; ], csrf: false },
  onerror:
   { errorPageUrl: &#39;&#39;,
     appErrorFilter: null,
     templatePath:
      &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-onerror&#x2F;lib&#x2F;onerror_page.mustache&#39; },
  i18n:
   { defaultLocale: &#39;en_US&#39;,
     dirs:
      [ &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-session&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-security&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-jsonp&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-onerror&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-i18n&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-watcher&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-schedule&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-multipart&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-development&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-logrotator&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-static&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-view&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-cors&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-mongoose&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-redis&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-passport&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-passport-local&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg&#x2F;config&#x2F;locales&#39;,
        &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;config&#x2F;locales&#39; ],
     queryField: &#39;locale&#39;,
     cookieField: &#39;locale&#39;,
     cookieDomain: &#39;&#39;,
     cookieMaxAge: &#39;1y&#39;,
     functionName: &#39;__&#39; },
  watcher:
   { type: &#39;development&#39;,
     eventSources:
      { default:
         &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-watcher&#x2F;lib&#x2F;event-sources&#x2F;default&#39;,
        development:
         &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;node_modules&#x2F;egg-watcher&#x2F;lib&#x2F;event-sources&#x2F;development&#39; } },
  customLogger:
   { scheduleLogger: { consoleLevel: &#39;NONE&#39;, file: &#39;egg-schedule.log&#39; } },
  schedule: { directory: [] },
  multipart:
   { mode: &#39;stream&#39;,
     autoFields: false,
     defaultCharset: &#39;utf8&#39;,
     fieldNameSize: 100,
     fieldSize: 102400,
     fields: 10,
     fileSize: 10485760,
     files: 10,
     fileExtensions: [],
     whitelist: null,
     tmpdir: &#39;&#x2F;tmp&#x2F;egg-multipart-tmp&#x2F;yanxuan-server-demo&#39;,
     cleanSchedule: { cron: &#39;0 30 4 * * *&#39; } },
  development:
   { watchDirs: [],
     ignoreDirs: [],
     fastReady: false,
     reloadOnDebug: true,
     overrideDefault: false },
  logrotator:
   { filesRotateByHour: null,
     hourDelimiter: &#39;-&#39;,
     filesRotateBySize: null,
     maxFileSize: 52428800,
     maxFiles: 10,
     rotateDuration: 60000,
     maxDays: 31 },
  static:
   { prefix: &#39;&#x2F;public&#x2F;&#39;,
     dir: &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;app&#x2F;public&#39;,
     dynamic: true,
     preload: false,
     buffer: false,
     maxFiles: 1000 },
  view:
   { root: &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;app&#x2F;view&#39;,
     cache: false,
     defaultExtension: &#39;.html&#39;,
     defaultViewEngine: &#39;&#39;,
     mapping: {} },
  cors:
   { origin: &#39;*&#39;, allowMethods: &#39;GET,HEAD,PUT,POST,DELETE,PATCH&#39; },
  mongoose:
   { url: &#39;&#39;,
     options: {},
     plugins: [],
     loadModel: true,
     app: true,
     agent: false,
     client:
      { url:
         &#39;mongodb:&#x2F;&#x2F;yanxuan:Xiecheng1987@yanxuan.xiecheng.live:27017&#x2F;yanxuan&#39;,
        options: [Object] } },
  redis:
   { default: {},
     app: true,
     agent: false,
     supportTimeCommand: true,
     client: { port: 6379, host: &#39;127.0.0.1&#39;, password: &#39;&#39;, db: 0 } },
  passportLocal:
   { usernameField: &#39;username&#39;,
     passwordField: &#39;password&#39;,
     passReqToCallback: true },
  env: &#39;local&#39;,
  name: &#39;yanxuan-server-demo&#39;,
  keys: &#39;yanxuan-server-demo_1584596882771_6167&#39;,
  cookies: {},
  proxy: false,
  maxIpsCount: 0,
  maxProxyCount: 0,
  protocolHeaders: &#39;x-forwarded-proto&#39;,
  ipHeaders: &#39;x-forwarded-for&#39;,
  hostHeaders: &#39;&#39;,
  pkg:
   { name: &#39;yanxuan-server-demo&#39;,
     version: &#39;1.0.0&#39;,
     description: &#39;&#39;,
     private: true,
     egg: { declarations: true },
     dependencies:
      { &#39;acorn-jsx&#39;: &#39;^5.2.0&#39;,
        &#39;co-mocha&#39;: &#39;^1.2.2&#39;,
        egg: &#39;^2.15.1&#39;,
        &#39;egg-cors&#39;: &#39;^2.2.3&#39;,
        &#39;egg-mongoose&#39;: &#39;^3.2.0&#39;,
        &#39;egg-passport&#39;: &#39;^2.1.1&#39;,
        &#39;egg-passport-local&#39;: &#39;^1.2.1&#39;,
        &#39;egg-redis&#39;: &#39;^2.4.0&#39;,
        &#39;egg-scripts&#39;: &#39;^2.11.0&#39;,
        nodemailer: &#39;^6.4.6&#39; },
     devDependencies:
      { autod: &#39;^3.0.1&#39;,
        &#39;autod-egg&#39;: &#39;^1.1.0&#39;,
        &#39;egg-bin&#39;: &#39;^4.11.0&#39;,
        &#39;egg-ci&#39;: &#39;^1.11.0&#39;,
        &#39;egg-mock&#39;: &#39;^3.21.0&#39;,
        eslint: &#39;^5.13.0&#39;,
        &#39;eslint-config-egg&#39;: &#39;^7.1.0&#39; },
     engines: { node: &#39;&gt;&#x3D;10.0.0&#39; },
     scripts:
      { start:
         &#39;egg-scripts start --daemon --title&#x3D;egg-server-yanxuan-server&#39;,
        stop: &#39;egg-scripts stop --title&#x3D;egg-server-yanxuan-server&#39;,
        dev: &#39;egg-bin dev&#39;,
        debug: &#39;egg-bin debug&#39;,
        test: &#39;npm run lint -- --fix &amp;&amp; npm run test-local&#39;,
        &#39;test-local&#39;: &#39;egg-bin test&#39;,
        cov: &#39;egg-bin cov&#39;,
        lint: &#39;eslint .&#39;,
        ci: &#39;npm run lint &amp;&amp; npm run cov&#39;,
        autod: &#39;autod&#39; },
     ci: { version: &#39;10&#39; },
     repository: { type: &#39;git&#39;, url: &#39;&#39; },
     author: &#39;&#39;,
     license: &#39;MIT&#39; },
  baseDir: &#39;&#x2F;root&#x2F;yanxuan-server-demo&#39;,
  HOME: &#39;&#x2F;root&#39;,
  rundir: &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;run&#39;,
  dump:
   { ignore:
      Set {
        &#39;pass&#39;,
        &#39;pwd&#39;,
        &#39;passd&#39;,
        &#39;passwd&#39;,
        &#39;password&#39;,
        &#39;keys&#39;,
        &#39;masterKey&#39;,
        &#39;accessKey&#39;,
        &#x2F;secret&#x2F;i } },
  confusedConfigurations:
   { bodyparser: &#39;bodyParser&#39;,
     notFound: &#39;notfound&#39;,
     sitefile: &#39;siteFile&#39;,
     middlewares: &#39;middleware&#39;,
     httpClient: &#39;httpclient&#39; },
  notfound: { pageUrl: &#39;&#39; },
  siteFile:
   { &#39;&#x2F;favicon.ico&#39;:
      &lt;Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 00 ca 00 00 00 ca 08 06 00 00 00 e4 65 df a8 00 00 00 01 73 52 47 42 00 ae ce 1c e9 00 00 18 f9 ... &gt; },
  bodyParser:
   { enable: true,
     encoding: &#39;utf8&#39;,
     formLimit: &#39;1mb&#39;,
     jsonLimit: &#39;1mb&#39;,
     textLimit: &#39;1mb&#39;,
     strict: true,
     queryString:
      { arrayLimit: 100,
        depth: 5,
        parameterLimit: 1000,
        allowDots: true },
     onerror: undefined,
     detectJSON: undefined,
     returnRawBody: true },
  logger:
   { dir: &#39;&#x2F;root&#x2F;yanxuan-server-demo&#x2F;logs&#x2F;yanxuan-server-demo&#39;,
     encoding: &#39;utf8&#39;,
     env: &#39;local&#39;,
     level: &#39;INFO&#39;,
     consoleLevel: &#39;INFO&#39;,
     disableConsoleAfterReady: false,
     outputJSON: false,
     buffer: true,
     appLogName: &#39;yanxuan-server-demo-web.log&#39;,
     coreLogName: &#39;egg-web.log&#39;,
     agentLogName: &#39;egg-agent.log&#39;,
     errorLogName: &#39;common-error.log&#39;,
     coreLogger: { consoleLevel: &#39;WARN&#39; },
     allowDebugAtProd: false,
     type: &#39;application&#39; },
  httpclient:
   { enableDNSCache: false,
     dnsCacheLookupInterval: 10000,
     dnsCacheMaxLength: 1000,
     request: { timeout: 5000 },
     httpAgent:
      { keepAlive: true,
        freeSocketTimeout: 4000,
        maxSockets: 9007199254740991,
        maxFreeSockets: 256,
        timeout: 30000,
        socketActiveTTL: 0 },
     httpsAgent:
      { keepAlive: true,
        freeSocketTimeout: 4000,
        maxSockets: 9007199254740991,
        maxFreeSockets: 256,
        timeout: 30000,
        socketActiveTTL: 0 } },
  meta: { enable: true, logging: false },
  coreMiddleware:
   [ &#39;cors&#39;,
     &#39;meta&#39;,
     &#39;siteFile&#39;,
     &#39;notfound&#39;,
     &#39;static&#39;,
     &#39;bodyParser&#39;,
     &#39;overrideMethod&#39;,
     &#39;session&#39;,
     &#39;securities&#39;,
     &#39;i18n&#39;,
     &#39;eggLoaderTrace&#39;,
     &#39;passportInitialize&#39;,
     &#39;passportSession&#39; ],
  workerStartTimeout: 600000,
  serverTimeout: null,
  cluster: { listen: { path: &#39;&#39;, port: 7001, hostname: &#39;&#39; } },
  clusterClient: { maxWaitTime: 60000, responseTimeout: 60000 },
  onClientError: null,
  middleware: [],
  coreMiddlewares:
   [ &#39;cors&#39;,
     &#39;meta&#39;,
     &#39;siteFile&#39;,
     &#39;notfound&#39;,
     &#39;static&#39;,
     &#39;bodyParser&#39;,
     &#39;overrideMethod&#39;,
     &#39;session&#39;,
     &#39;securities&#39;,
     &#39;i18n&#39;,
     &#39;eggLoaderTrace&#39;,
     &#39;passportInitialize&#39;,
     &#39;passportSession&#39; ],
  appMiddlewares: [],
  appMiddleware: [],
  multipartParseOptions:
   { autoFields: false,
     defCharset: &#39;utf8&#39;,
     limits:
      { fieldNameSize: 100,
        fieldSize: 102400,
        fields: 10,
        fileSize: 10485760,
        files: 10 },
     checkFile: [Function: checkFile] } }</code></pre>
          </div>
        </div>
      </<div>
    </section>

    <script type="text/javascript">
var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=0,n=_self.Prism={util:{encode:function(e){return e instanceof a?new a(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function(e){var t=n.util.type(e);switch(t){case"Object":var a={};for(var r in e)e.hasOwnProperty(r)&&(a[r]=n.util.clone(e[r]));return a;case"Array":return e.map&&e.map(function(e){return n.util.clone(e)})}return e}},languages:{extend:function(e,t){var a=n.util.clone(n.languages[e]);for(var r in t)a[r]=t[r];return a},insertBefore:function(e,t,a,r){r=r||n.languages;var i=r[e];if(2==arguments.length){a=arguments[1];for(var l in a)a.hasOwnProperty(l)&&(i[l]=a[l]);return i}var o={};for(var s in i)if(i.hasOwnProperty(s)){if(s==t)for(var l in a)a.hasOwnProperty(l)&&(o[l]=a[l]);o[s]=i[s]}return n.languages.DFS(n.languages,function(t,n){n===r[e]&&t!=e&&(this[t]=o)}),r[e]=o},DFS:function(e,t,a,r){r=r||{};for(var i in e)e.hasOwnProperty(i)&&(t.call(e,i,e[i],a||i),"Object"!==n.util.type(e[i])||r[n.util.objId(e[i])]?"Array"!==n.util.type(e[i])||r[n.util.objId(e[i])]||(r[n.util.objId(e[i])]=!0,n.languages.DFS(e[i],t,i,r)):(r[n.util.objId(e[i])]=!0,n.languages.DFS(e[i],t,null,r)))}},plugins:{},highlightAll:function(e,t){var a={callback:t,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};n.hooks.run("before-highlightall",a);for(var r,i=a.elements||document.querySelectorAll(a.selector),l=0;r=i[l++];)n.highlightElement(r,e===!0,a.callback)},highlightElement:function(t,a,r){for(var i,l,o=t;o&&!e.test(o.className);)o=o.parentNode;o&&(i=(o.className.match(e)||[,""])[1].toLowerCase(),l=n.languages[i]),t.className=t.className.replace(e,"").replace(/\s+/g," ")+" language-"+i,o=t.parentNode,/pre/i.test(o.nodeName)&&(o.className=o.className.replace(e,"").replace(/\s+/g," ")+" language-"+i);var s=t.textContent,u={element:t,language:i,grammar:l,code:s};if(n.hooks.run("before-sanity-check",u),!u.code||!u.grammar)return u.code&&(u.element.textContent=u.code),n.hooks.run("complete",u),void 0;if(n.hooks.run("before-highlight",u),a&&_self.Worker){var g=new Worker(n.filename);g.onmessage=function(e){u.highlightedCode=e.data,n.hooks.run("before-insert",u),u.element.innerHTML=u.highlightedCode,r&&r.call(u.element),n.hooks.run("after-highlight",u),n.hooks.run("complete",u)},g.postMessage(JSON.stringify({language:u.language,code:u.code,immediateClose:!0}))}else u.highlightedCode=n.highlight(u.code,u.grammar,u.language),n.hooks.run("before-insert",u),u.element.innerHTML=u.highlightedCode,r&&r.call(t),n.hooks.run("after-highlight",u),n.hooks.run("complete",u)},highlight:function(e,t,r){var i=n.tokenize(e,t);return a.stringify(n.util.encode(i),r)},tokenize:function(e,t){var a=n.Token,r=[e],i=t.rest;if(i){for(var l in i)t[l]=i[l];delete t.rest}e:for(var l in t)if(t.hasOwnProperty(l)&&t[l]){var o=t[l];o="Array"===n.util.type(o)?o:[o];for(var s=0;s<o.length;++s){var u=o[s],g=u.inside,c=!!u.lookbehind,h=!!u.greedy,f=0,d=u.alias;if(h&&!u.pattern.global){var p=u.pattern.toString().match(/[imuy]*$/)[0];u.pattern=RegExp(u.pattern.source,p+"g")}u=u.pattern||u;for(var m=0,y=0;m<r.length;y+=r[m].length,++m){var v=r[m];if(r.length>e.length)break e;if(!(v instanceof a)){u.lastIndex=0;var b=u.exec(v),k=1;if(!b&&h&&m!=r.length-1){if(u.lastIndex=y,b=u.exec(e),!b)break;for(var w=b.index+(c?b[1].length:0),_=b.index+b[0].length,A=m,P=y,j=r.length;j>A&&_>P;++A)P+=r[A].length,w>=P&&(++m,y=P);if(r[m]instanceof a||r[A-1].greedy)continue;k=A-m,v=e.slice(y,P),b.index-=y}if(b){c&&(f=b[1].length);var w=b.index+f,b=b[0].slice(f),_=w+b.length,x=v.slice(0,w),O=v.slice(_),S=[m,k];x&&S.push(x);var N=new a(l,g?n.tokenize(b,g):b,d,b,h);S.push(N),O&&S.push(O),Array.prototype.splice.apply(r,S)}}}}}return r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},a=n.Token=function(e,t,n,a,r){this.type=e,this.content=t,this.alias=n,this.length=0|(a||"").length,this.greedy=!!r};if(a.stringify=function(e,t,r){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return a.stringify(n,t,e)}).join("");var i={type:e.type,content:a.stringify(e.content,t,r),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:r};if("comment"==i.type&&(i.attributes.spellcheck="true"),e.alias){var l="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,l)}n.hooks.run("wrap",i);var o=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,"&quot;")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(o?" "+o:"")+">"+i.content+"</"+i.tag+">"},!_self.document)return _self.addEventListener?(_self.addEventListener("message",function(e){var t=JSON.parse(e.data),a=t.language,r=t.code,i=t.immediateClose;_self.postMessage(n.highlight(r,n.languages[a],a)),i&&_self.close()},!1),_self.Prism):_self.Prism;var r=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return r&&(n.filename=r.src,document.addEventListener&&!r.hasAttribute("data-manual")&&("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);
Prism.languages.markup={comment:/<!--[\w\W]*?-->/,prolog:/<\?[\w\W]+?\?>/,doctype:/<!DOCTYPE[\w\W]+?>/i,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&amp;/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup;
Prism.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:{pattern:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.util.clone(Prism.languages.css),Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/(<style[\w\W]*?>)[\w\W]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css"}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag));
Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/};
Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*\*?|\/|~|\^|%|\.{3}/}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\\\|\\?[^\\])*?`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(<script[\w\W]*?>)[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript"}}),Prism.languages.js=Prism.languages.javascript;
Prism.languages.json={property:/"(?:\\.|[^\\"])*"(?=\s*:)/gi,string:/"(?!:)(?:\\.|[^\\"])*"(?!:)/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee][+-]?\d+)?)\b/g,punctuation:/[{}[\]);,]/g,operator:/:/g,"boolean":/\b(true|false)\b/gi,"null":/\bnull\b/gi},Prism.languages.jsonp=Prism.languages.json;
Prism.languages.typescript=Prism.languages.extend("javascript",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield|false|true|module|declare|constructor|string|Function|any|number|boolean|Array|enum|symbol|namespace|abstract|require|type)\b/}),Prism.languages.ts=Prism.languages.typescript;
!function(){function e(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function t(e,t){return t=" "+t+" ",(" "+e.className+" ").replace(/[\n\t]/g," ").indexOf(t)>-1}function n(e,n,i){for(var o,a=n.replace(/\s+/g,"").split(","),l=+e.getAttribute("data-line-offset")||0,d=r()?parseInt:parseFloat,c=d(getComputedStyle(e).lineHeight),s=0;o=a[s++];){o=o.split("-");var u=+o[0],m=+o[1]||u,h=document.createElement("div");h.textContent=Array(m-u+2).join(" \n"),h.setAttribute("aria-hidden","true"),h.className=(i||"")+" line-highlight",t(e,"line-numbers")||(h.setAttribute("data-start",u),m>u&&h.setAttribute("data-end",m)),h.style.top=(u-l-1)*c+"px",t(e,"line-numbers")?e.appendChild(h):(e.querySelector("code")||e).appendChild(h)}}function i(){var t=location.hash.slice(1);e(".temporary.line-highlight").forEach(function(e){e.parentNode.removeChild(e)});var i=(t.match(/\.([\d,-]+)$/)||[,""])[1];if(i&&!document.getElementById(t)){var r=t.slice(0,t.lastIndexOf(".")),o=document.getElementById(r);o&&(o.hasAttribute("data-line")||o.setAttribute("data-line",""),n(o,i,"temporary "),document.querySelector(".temporary.line-highlight").scrollIntoView())}}if("undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector){var r=function(){var e;return function(){if("undefined"==typeof e){var t=document.createElement("div");t.style.fontSize="13px",t.style.lineHeight="1.5",t.style.padding=0,t.style.border=0,t.innerHTML="&nbsp;<br />&nbsp;",document.body.appendChild(t),e=38===t.offsetHeight,document.body.removeChild(t)}return e}}(),o=0;Prism.hooks.add("complete",function(t){var r=t.element.parentNode,a=r&&r.getAttribute("data-line");r&&a&&/pre/i.test(r.nodeName)&&(clearTimeout(o),e(".line-highlight",r).forEach(function(e){e.parentNode.removeChild(e)}),n(r,a),o=setTimeout(i,1))}),window.addEventListener&&window.addEventListener("hashchange",i)}}();
!function(){"undefined"!=typeof self&&self.Prism&&self.document&&Prism.hooks.add("complete",function(e){if(e.code){var t=e.element.parentNode,s=/\s*\bline-numbers\b\s*/;if(t&&/pre/i.test(t.nodeName)&&(s.test(t.className)||s.test(e.element.className))&&!e.element.querySelector(".line-numbers-rows")){s.test(e.element.className)&&(e.element.className=e.element.className.replace(s,"")),s.test(t.className)||(t.className+=" line-numbers");var n,a=e.code.match(/\n(?!$)/g),l=a?a.length+1:1,r=new Array(l+1);r=r.join("<span></span>"),n=document.createElement("span"),n.setAttribute("aria-hidden","true"),n.className="line-numbers-rows",n.innerHTML=r,t.hasAttribute("data-start")&&(t.style.counterReset="linenumber "+(parseInt(t.getAttribute("data-start"),10)-1)),e.element.appendChild(n)}}})}();
    </script>
    <script>
      (function() {
        const $ = function(value) { return document.querySelector(value) };
        const $$ = function(value) { return document.querySelectorAll(value) };
        var nativeFramesLength = $$('.frame-row.native-frame').length;
        var allFramesLength = $$('.frame-row').length;
        function filterFrames () {
          $('.frame-preview').classList.remove('is-hidden');
          var isSelected = $('#frames-filter').checked;
          if (isSelected) {
            $$('.frame-row.native-frame').forEach(function(node) {
              node.classList.add('force-show');
            });
          } else {
            $$('.frame-row.native-frame').forEach(function(node) {
              node.classList.remove('force-show');
            });
          }
        }
        function displayFirstView () {
          if (nativeFramesLength !== allFramesLength) {
            $('.frame-preview').classList.remove('is-hidden');
          }
        }
        function showFrameContext (frame) {
          $frameContext = frame.querySelector('.frame-context');
          var $context = $frameContext.innerHTML;
          $context = $context.trim().length === 0 ? 'Missing stack frames' : $context;
          var $line = $frameContext.getAttribute('data-line');
          var $start = $frameContext.getAttribute('data-start');
          var $file = $frameContext.getAttribute('data-file');
          var $method = $frameContext.getAttribute('data-method');
          var $lineColumn = $frameContext.getAttribute('data-line-column');
          var $language = $frameContext.getAttribute('data-extname') || 'js';
          $('#code-drop').parentNode.setAttribute('data-line', $line);
          $('#code-drop').parentNode.setAttribute('data-start', $start);
          $('#code-drop').parentNode.setAttribute('data-language', $language);
          $('#code-drop').parentNode.setAttribute('data-line-offset', (Number($start) - 1));
          $('#code-drop').setAttribute('class', 'language-' + $language);
          $('#code-drop').innerHTML = $context;
          $('#frame-file').innerHTML = $file;
          $('#frame-method').innerHTML = $method + '' + $lineColumn;

          Prism.highlightAll();
        }
        $$('.frame-row').forEach(function(node) {
          node.onclick = function (e) {
            $$('.frame-row').forEach(function(_node) { _node.classList.remove('active') });
            e.currentTarget.classList.add('active');
            showFrameContext(e.currentTarget);
          }
        })
        $('#frames-filter').onclick = function () {
          filterFrames();
        }
        displayFirstView();
        showFrameContext($('.frame-row.active'));
      })();
    </script>
  </section>
</body>
</html>